It is becoming increasingly important to be able to access computer-based services using devices other than conventional desktop computers. Such devices include, for example, mobile phones and personal digital assistants (PDAs). Such devices are usually smaller and more portable than their desktop counterparts. However, this portability comes at a price. In particular, such devices typically share three disadvantages relative to conventional desktop computers: they have more cumbersome input mechanisms, they have slower (usually wireless) connections to servers, and they have less on-board computing power.
With respect to input mechanisms, desktop computers typically include query keyboards. Although a qwerty keyboard may provide near optimal performance for a skilled user, speed and accuracy problems can arise in character input by an unskilled user. Speed and accuracy problems can also arise even for a skilled qwerty keyboard user using a client machine with a numeric keypad, a pen-based input device, or other manual character input device that is different from a qwerty keyboard.
Problems can also arise in input of characters through a low speed connection between a client machine and a server machine—dynamic expansion and other conventional techniques for accelerating character input may be impractical because the client machine may not be capable of performing expansion and the slow connection may prevent the server from providing feedback at acceptable speeds. These and similar problems in character input are referred to generally herein as “character input problems”.
Based on the foregoing, it is clearly desirable to provide techniques that address the character input problems. In particular, it is desirable to provide techniques that facilitate character input at devices with relatively cumbersome input mechanisms, relatively slow connection speeds, and/or relatively low on-board computer power.